读取文件

您所在的位置:网站首页 linux 读取文件行 读取文件

读取文件

2023-03-14 23:18| 来源: 网络整理| 查看: 265

目录

❤  读取整个文件

❤  文件路径

❤  逐行读取

❤  创建一个包含文件各行内容的列表

❤  使用文件的内容

❤  大文件读取

python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm=1001.2014.3001.5502

每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此。要使用文本文件中的信息,首先需要将信息读取到内存中。 为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。 ❤  读取整个文件

要读取文件,需要一个包含几行文本的文件(文件file_b.txt与file_a.py在同一目录下)

file_b.txt

3.1415926535   8979323846   2643383279   5028841971

 file_a.py

with open("file_b.txt") as file_object: contents = file_object.read() print(contents)

我们可以看出,读取文件时,并没有使用colse()方法,那么未妥善的关闭文件,会不会导致文件收到损坏呢?在这里是不会的,因为我们在open()方法前边引入了关键字with,该关键字的作用是:在不需要访问文件后将其关闭

python的读写文件的方法:

.read():一次读取文件所有内容,返回一个字符串或字节流。

.read(size):每次最多读取指定长度的内容,返回一个字符串或字节流。在Python3中size指定的是字符长度。

.readlines():一次读取文件所有内容,按行返回一个列表。

.readline():每次只读取一行内容。

我们来读取一个存放在D盘的名为“英语.txt”的文本文件,该文件的字符编码为utf-8

# 第一步:(以只读模式)打开文件 f = open('D:/英语.txt', mode='r', encoding='utf-8') # 第二步:读取文件内容 print(f.read()) # 第三步:关闭文件 f.close() ❤  文件路径

程序在读取文本文件的时候,如果不给定路径,那么它会先在当前目录下进行检索,有时候我们需要读取其他文件夹中的路径,例如:

 如果文件PI_DESC.txt存储在文件夹txt中

那么我们读取文本内容的代码得修改为:

with open("txt\PI_DESC.txt") as file_object: contents = file_object.read() print(contents)

给open参数传递的参数得给相对路径

Linux与OS X中,路径使用斜杠(/)

Windows中,使用反斜杠(\),但是由于python中,反斜杠被视为转义字符,在Windows最好在路径开头的单(双)引号前加上r

相对路径:即相对于程序文件的路径

绝对路径:即文本在硬盘上存储的路径

使用绝对路径的程序怎么写呢 ?

with open(r"D:\python\txt\PI_DESC.txt") as file_object: contents = file_object.read() print(contents) ❤  逐行读取

读取文件时,可能需要读取文件中的每一行,要以每一行的方式来检查文件或者修改文件,那么可以对文件对象使用for循环

file_path = 'txt\file_b.txt' with open(file_path) as file_object: for line in file_object: print(line)

输出:

3.1415926535

  8979323846

  2643383279

  5028841971

通过运行结果我们可以看出,打印结果中间有很多空白行,这些空白行是怎么来的呢?因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加一个换行符,因此每行末尾就有2个换行符:一个来自文件,另外一个来自print,消除这些换行符,只需要使用方法rstrip()

file_path = 'txt\file_b.txt' with open(file_path) as file_object: for line in file_object: print(line.rstrip())

输出:

3.1415926535   8979323846   2643383279   5028841971

 ❤  创建一个包含文件各行内容的列表

使用关键字with时,open()返回的文件对象只能在with代码块可用,如果要在with代码块外访问文件的内容,可在with块中将文件各行存储在一个列表,并在with代码块外使用该列表

file_path = 'txt\file_b.txt' with open(file_path) as file_object: lines = file_object.readlines() for line in lines: print(line.rstrip()) ❤  使用文件的内容

在上面一节中我们提到把数据提取到内存中,那么我们就可以对数据进行随心所欲的操作了

需要:将圆周率连在一起打印出来(删除空格),并打印其长度

file_path = 'txt\file_b.txt' with open(file_path) as file_object: lines = file_object.readlines() pi_str = '' for line in lines: pi_str += line.strip() print(pi_str.rstrip()) print(len(pi_str.rstrip()))

注意最后print语句并没有缩进,如果是缩进的话就会每取一行打印一次

打印效果如下

3.1415926535897932384626433832795028841971

42

❤  大文件读取

在这里我先用圆周率前10000位做实验,也算不上大文件,只是相对来说是大文件

附件下载地址:点击下载

为了不显示圆周率一万位,造成console不停的闪烁,我们只显示前20位

file_path = 'txt\file_b.txt' with open(file_path) as file_object: lines = file_object.readlines() pi_str = '' for line in lines: pi_str += line.strip() print(pi_str[:20].lstrip())



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3